package com.caption.mq.entity;

import com.caption.mq.constant.MessageExtConstant;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @description: TODO
 * @author: 码农
 * @date: 2022-01-16 06:25:50
 */
@Data
@NoArgsConstructor
public class MqSubscribeDO {
    /**
     * 消费者组
     */
    private String consumeGroup;
    /**
     * 消费主题
     */
    private String topic;
    /**
     * 消费标签
     */
    private String tag;

    public MqSubscribeDO(String consumeGroup, String topic, String tag) {
        this.consumeGroup = consumeGroup;
        this.topic = topic;
        this.tag = tag;
    }

    /**
     * 消费方式 0 集群消费 1 顺序消息
     */
    private String messageMode = MessageExtConstant.MESSAGE_MODE_CLUSTERING;

    /**
     * 使用线程池并发消费
     * 单线程消费
     * @return
     */
    private String consumeMode = MessageExtConstant.CONSUME_MODE_CONCURRENTLY;

    /**
     * 最大重试次数，超过最大重试次数，消息将被转 移到私信队列
     */
    private int retryCount = 3;
    /**
     * 消息消费失败默认的重试16次，但这16次其中是有间隔的。1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
     * 每一次重试都会递增时间，如果可以通过 ConsumeConcurrentlyContext.setDelayLevelWhenNextConsume(3) 设置重试间隔。注意这个3指的是 10s
     */
    private int retryStrategy = 1;
    /**
     * 消费线程池最大线程数
     */
    private Integer consumeThreadMax = 64;
    /**
     * 消费组group生成最小线程数
     */
    private Integer consumeThreadMin = 20;
    /**
     * 批量拉取数据，一次从broker拉取消息条数
     */
    private Integer pullBatchSize = 32;
    /**
     * 消费端批量消费每次处理消息条数
     */
    private Integer consumeMessageBatchMaxSize = 1;


}
